El estudio de la base de datos de la cual se quieren obtener los casos de prueba se hace analizando sintácticamente las sentencias SQL que la definen. La herramienta acepta un subconjunto de SQL (ver apéndice \ref{app:grammar}) convirtiendo estas sentencias en una estructura de objetos de C++ que es utilizada en los siguientes pasos para generar las restricciones (sección \ref{sec:formulas}).


Utilizamos Flex \cite{Flex} y Bison \cite{bison} como analizador léxico y sintáctico respectivamente. 

El analizador léxico nos permite traducir conjuntos de caracteres de la entrada de texto en \textit{tokens} dotando de significado dichos caracteres. Algunos \textit{tokens} tienen asociado un valor de un tipo de datos, por ejemplo la cadena de caracteres \textit{2012} será un token identificado como entero y con un valor entero asociado 2012.

El analizador sintáctico obtiene del analizador léxico una secuencia de \textit{tokens}. A partir de ella se obtiene la estructura y se construye el modelo de la base de datos definida en la entrada de texto analizada.

La gramática utilizada (ver apéndice \ref{app:grammar}) es una adaptación de la gramática de SQL-92 propuesta en \cite{sql92}. 
Es importante notar que, aunque nuestra herramienta contenga estos elementos de análisis de sentencias SQL, no es un compilador, por lo que no dará respuestas significativas al usuario si este introduce una expresión SQL mal formada.